//处理结构的函数-例：角度转化为弧度的函数
#include <iostream>
#include <cmath>

struct polar {
    double distance;
    double angle;
};

struct rect {
    double x;
    double y;
};
polar rect_to_polar(rect xypos);
void show_polar(polar dapos);

int main() {
    using namespace std;
    rect rplace;
    polar pplace;
    
    cout << "Enter the x and y values: ";
    while (cin >> rplace.x >> rplace.y) {
        pplace = rect_to_polar(rplace);
        show_polar(pplace);
        cout << "Next two numbers (q to quit): ";
    }
    cout << "Done.\n";
    return 0;
}

//atan2(y, x);可根据x, y的值计算角度
polar rect_to_polar(rect xypos) {
    polar answer;
    
    answer.distance =
    sqrt(xypos.x * xypos.x + xypos.y * xypos.y);
    answer.angle = atan2(xypos.y, xypos.x);
    return answer;
}

//show polar coordinates, converting angle to degrees
void show_polar(polar dapos) {
    using namespace std;
    const double Rad_to_deg = 57.29577951;
    
    cout << "distance = " << dapos.distance;
    cout << ", angle = " << dapos.angle * Rad_to_deg;
    cout << " degrees\n";
}
